/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package vip.xiaonuo.invoice.modular.system.ivorecord.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 发票主表实体
 *
 * @author z
 * @date  2025/10/22 17:01
 **/
@Getter
@Setter
@TableName("BIZ_IVO_RECORD")
public class IvoRecord {

    /** 主键 */
    @TableId
    @Schema(description = "主键")
    private String id;

    /** 第三方调用时的记录ID */
    @Schema(description = "第三方调用时的记录ID")
    private String invoiceTraceId;

    /** 发票请求流水号(SHUZU,查询用) */
    @Schema(description = "发票请求流水号(SHUZU,查询用)")
    private String invoiceRequestNo;

    /** 发票号码(SHUZU,重新交付,冲红使用) */
    @Schema(description = "发票号码(SHUZU,重新交付,冲红使用)")
    private String invoiceNo;

    /** 发票交易流水号 */
    @Schema(description = "发票交易流水号")
    private String serialNo;

    /** 发票代码 */
    @Schema(description = "发票代码")
    private String invoiceCode;

    /** 发票类型(81:数电专票,82:数电普票) */
    @Schema(description = "发票类型(81:数电专票,82:数电普票)")
    private String invoiceType;

    /** 平台编码(shuzu:数族,nuonuo:诺诺) */
    @Schema(description = "平台编码(shuzu:数族,nuonuo:诺诺)")
    private String platformCode;

    /** 销方名称 */
    @Schema(description = "销方名称")
    private String sellerName;

    /** 销方电话 */
    @Schema(description = "销方电话")
    private String sellerPhone;

    /** 商户号 */
    @Schema(description = "商户号")
    private String sellerId;

    /** 销方税号 */
    @Schema(description = "销方税号")
    private String sellerTaxNumber;

    /** 购方名称 */
    @Schema(description = "购方名称")
    private String buyerName;

    /** 购方税号 */
    @Schema(description = "购方税号")
    private String buyerTaxNumber;

    /** 购方电话 */
    @Schema(description = "购方电话")
    private String buyerPhone;

    /** 购方地址 */
    @Schema(description = "购方地址")
    private String buyerAddress;

    /** 购方银行账号 */
    @Schema(description = "购方银行账号")
    private String buyerBankAccount;

    /** 接收电话 */
    @Schema(description = "接收电话")
    private String receivePhone;

    /** 接收邮箱 */
    @Schema(description = "接收邮箱")
    private String receiveEmail;

    /** 开票人 */
    @Schema(description = "开票人")
    private String issuer;

    /** 含税标志 */
    @Schema(description = "含税标志")
    private String includeTaxFlag;

    /** 含税金额 */
    @Schema(description = "含税金额")
    private BigDecimal includeTaxAmount;

    /** 不含税金额 */
    @Schema(description = "不含税金额")
    private BigDecimal withoutTaxAmount;

    /** 税率 */
    @Schema(description = "税率")
    private BigDecimal taxRate;

    /** 税额 */
    @Schema(description = "税额")
    private BigDecimal taxAmount;

    /** 发票状态(处理中/成功/失败) */
    @Schema(description = "发票状态(处理中/成功/失败)")
    private String invoiceStatus;

    /** 开票日期 */
    @Schema(description = "开票日期")
    private String invoiceDate;

    /** 不动产信息 */
    @Schema(description = "不动产信息")
    private String realEstateInfo;

    /** 发票PDF地址 */
    @Schema(description = "发票PDF地址")
    private String pdfUrl;

    /** 发票图片地址 */
    @Schema(description = "发票图片地址")
    private String imgUrl;

    /** 失败原因 */
    @Schema(description = "失败原因")
    private String failReason;

    /** 回调URL */
    @Schema(description = "回调URL")
    private String callbackUrl;

    /** 最终回调状态 1成功 0失败 */
    @Schema(description = "最终回调状态 1成功 0失败")
    private String callbacked;

    /** 回调次数 */
    @Schema(description = "回调次数")
    private Integer callbackTimes;

    /** 特定要素类型代码 */
    @Schema(description = "特定要素类型代码")
    private String specialTypeCode;

    /** 备注信息 */
    @Schema(description = "备注信息")
    private String remark;

    /** 请求信息(用于重新开票) */
    @Schema(description = "请求信息(用于重新开票)")
    private String request;

    /** 重新开票请求次数 */
    @Schema(description = "重新开票请求次数")
    private String retryTimes;

    /** 删除标志(Y:已删除,N:未删除) */
    @Schema(description = "删除标志(Y:已删除,N:未删除)")
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private String deleteFlag;

    /** 创建时间 */
    @Schema(description = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 创建人 */
    @Schema(description = "创建人")
    @TableField(fill = FieldFill.INSERT)
    private String createUser;

    /** 更新时间 */
    @Schema(description = "更新时间")
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    /** 更新人 */
    @Schema(description = "更新人")
    @TableField(fill = FieldFill.UPDATE)
    private String updateUser;
}
